#!/bin/bash

set -e

# 进入 src 目录，这是 gn 需要的 source root
cd src

# 1. 生成ninja构建文件
# 输出目录会是 webrtc/src/out/mac_arm64_static
# 不使用内置的h264，关闭掉clang之后，如果启用内置的h264编解码，则无法编译通过
gn gen out/Default --args='
target_os="mac"
target_cpu="arm64"
is_component_build=false
is_debug=false
is_clang=false
treat_warnings_as_errors = false
rtc_use_h264 = false
rtc_libvpx_build_vp9=true
enable_stripping=true
rtc_enable_protobuf=false
use_custom_libcxx=false
use_lld=false
rtc_include_tests=false
rtc_include_builtin_video_codecs=true
rtc_include_builtin_audio_codecs=true
'

# 2. 编译webrtc静态库
ninja -C out/Default

# # 编译完成后，返回到项目根目录
cd ..

# # 3. 创建最终的输出目录
OUTPUT_DIR="webrtc_mac_arm64"
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR/lib"
mkdir -p "$OUTPUT_DIR/include"

# # 4. 拷贝静态库
# # 路径需要从根目录开始，所以是 src/out/...
cp src/out/Default/obj/libwebrtc.a "$OUTPUT_DIR/lib/"

# 5. 拷贝头文件
# 使用子shell进入src目录执行find，避免影响当前目录
# rsync的-R会保留目录结构，目标路径 ../"$OUTPUT_DIR/include/" 是相对于src目录的
(cd src && find api \
     rtc_base \
     modules \
     common_audio \
     common_video \
     p2p \
     pc \
     call \
     video \
     audio \
     logging \
     media \
     system_wrappers \
     -name "*.h" \
     -exec rsync -R {} ../"$OUTPUT_DIR/include/" \;)

echo "✅ Build finished successfully. Output in $OUTPUT_DIR"
